//
//  TelephonyInfo.m
//  MooreDoll
//
//  Created by 郭景豪 on 2014/11/26.
//  Copyright (c) 2014年 Tank. All rights reserved.
//

#import "TelephonyInfo.h"
#import <SystemConfiguration/CaptiveNetwork.h>

@implementation TelephonyInfo

/*
 取得目前手機電信商的 ISO Country Code:[tw]
 */
+ (NSString *)getCarrierInfo {
    // 获取运营商信息
    CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
    
    //取得資料
    CTCarrier *carrier = info.subscriberCellularProvider;
    
    //全部資料顯示出來
    NSLog(@"carrier:%@", [carrier description] );
    
    //顯示isoCountryCode  = tw
    NSLog(@"carrier:%@", [carrier isoCountryCode] );

//    info.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier) {
//        NSLog(@"carrier:%@", [carrier description]);
//        
//    };
    
    return [carrier isoCountryCode];

//    NSLog(@"isoCountryCode : %@ %@" ,[carrier isoCountryCode], [[self dictCountryCodes]objectForKey:[[carrier isoCountryCode] uppercaseString]]);
    
    // 如果运营商变化将更新运营商输出
    
//    info.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier) {
//        NSLog(@"carrier:%@", [carrier description]);
//    };
    
    
    
    // 输出手机的数据业务信息
    //NSLog(@"Radio Access Technology:%@", info.currentRadioAccessTechnology);
}

/*
 取得中文
 */
+(NSString *)getCountryCodeString
{
    
    //先檢查哪一個語言 如果你選擇是美國 最後顯示出來會英文
    NSLocale *curLocal = [[NSLocale alloc]initWithLocaleIdentifier:[Language userLanguage]] ;

    NSLog(@"%@",[curLocal displayNameForKey:NSLocaleCountryCode value:[TelephonyInfo getCarrierInfo]]);//台灣
    
    //這裏會返回一個文字 要帶入的是英文國碼 這邊是 value:@"tw"
    NSString *string = [curLocal displayNameForKey:NSLocaleCountryCode value:[TelephonyInfo getCarrierInfo]];
    
    return string;
}


/*
 CountryCode 轉 number
 */
+(NSString *)getCountryCodeNumber
{
    //先取得 國家代碼 tw 再轉換成 886
    return [[self dictCountryCodes]objectForKey:[[self getCarrierInfo] uppercaseString]];
}
/*
 取得當地的currentLocale 轉換成 Number
 */
+(NSString *)getLocationCountryCodeNumber
{
    NSLocale *locale = [NSLocale currentLocale];
    ////
    NSString *countryCode = [locale objectForKey:NSLocaleCountryCode];
    return [[self dictCountryCodes]objectForKey:countryCode];
}
/*
 CountryCode 轉 number 的資料表
 */
+(NSDictionary *)dictCountryCodes{
    NSDictionary *dictCodes = [NSDictionary dictionaryWithObjectsAndKeys:
                               @"93", @"AF",@"20",@"EG", @"355", @"AL", @"213", @"DZ", @"1", @"AS",
                               @"376", @"AD", @"244", @"AO", @"1", @"AI", @"1", @"AG",
                               @"54", @"AR", @"374", @"AM", @"297", @"AW", @"61", @"AU",
                               @"43", @"AT", @"994", @"AZ", @"1", @"BS", @"973", @"BH",
                               @"880", @"BD", @"1", @"BB", @"375", @"BY", @"32", @"BE",
                               @"501", @"BZ", @"229", @"BJ", @"1", @"BM", @"975", @"BT",
                               @"387", @"BA", @"267", @"BW", @"55", @"BR", @"246", @"IO",
                               @"359", @"BG", @"226", @"BF", @"257", @"BI", @"855", @"KH",
                               @"237", @"CM", @"1", @"CA", @"238", @"CV", @"345", @"KY",
                               @"236", @"CF", @"235", @"TD", @"56", @"CL", @"86", @"CN",
                               @"61", @"CX", @"57", @"CO", @"269", @"KM", @"242", @"CG",
                               @"682", @"CK", @"506", @"CR", @"385", @"HR", @"53", @"CU",
                               @"537", @"CY", @"420", @"CZ", @"45", @"DK", @"253", @"DJ",
                               @"1", @"DM", @"1", @"DO", @"593", @"EC", @"20", @"EG",
                               @"503", @"SV", @"240", @"GQ", @"291", @"ER", @"372", @"EE",
                               @"251", @"ET", @"298", @"FO", @"679", @"FJ", @"358", @"FI",
                               @"33", @"FR", @"594", @"GF", @"689", @"PF", @"241", @"GA",
                               @"220", @"GM", @"995", @"GE", @"49", @"DE", @"233", @"GH",
                               @"350", @"GI", @"30", @"GR", @"299", @"GL", @"1", @"GD",
                               @"590", @"GP", @"1", @"GU", @"502", @"GT", @"224", @"GN",
                               @"245", @"GW", @"595", @"GY", @"509", @"HT", @"504", @"HN",
                               @"36", @"HU", @"354", @"IS", @"91", @"IN", @"62", @"ID",
                               @"964", @"IQ", @"353", @"IE", @"972", @"IL", @"39", @"IT",
                               @"1", @"JM", @"81", @"JP", @"962", @"JO", @"77", @"KZ",
                               @"254", @"KE", @"686", @"KI", @"965", @"KW", @"996", @"KG",
                               @"371", @"LV", @"961", @"LB", @"266", @"LS", @"231", @"LR",
                               @"423", @"LI", @"370", @"LT", @"352", @"LU", @"261", @"MG",
                               @"265", @"MW", @"60", @"MY", @"960", @"MV", @"223", @"ML",
                               @"356", @"MT", @"692", @"MH", @"596", @"MQ", @"222", @"MR",
                               @"230", @"MU", @"262", @"YT", @"52", @"MX", @"377", @"MC",
                               @"976", @"MN", @"382", @"ME", @"1", @"MS", @"212", @"MA",
                               @"95", @"MM", @"264", @"NA", @"674", @"NR", @"977", @"NP",
                               @"31", @"NL", @"599", @"AN", @"687", @"NC", @"64", @"NZ",
                               @"505", @"NI", @"227", @"NE", @"234", @"NG", @"683", @"NU",
                               @"672", @"NF", @"1", @"MP", @"47", @"NO", @"968", @"OM",
                               @"92", @"PK", @"680", @"PW", @"507", @"PA", @"675", @"PG",
                               @"595", @"PY", @"51", @"PE", @"63", @"PH", @"48", @"PL",
                               @"351", @"PT", @"1", @"PR", @"974", @"QA", @"40", @"RO",
                               @"250", @"RW", @"685", @"WS", @"378", @"SM", @"966", @"SA",
                               @"221", @"SN", @"381", @"RS", @"248", @"SC", @"232", @"SL",
                               @"65", @"SG", @"421", @"SK", @"386", @"SI", @"677", @"SB",
                               @"27", @"ZA", @"500", @"GS", @"34", @"ES", @"94", @"LK",
                               @"249", @"SD", @"597", @"SR", @"268", @"SZ", @"46", @"SE",
                               @"41", @"CH", @"992", @"TJ", @"66", @"TH", @"228", @"TG",
                               @"690", @"TK", @"676", @"TO", @"1", @"TT", @"216", @"TN",
                               @"90", @"TR", @"993", @"TM", @"1", @"TC", @"688", @"TV",
                               @"256", @"UG", @"380", @"UA", @"971", @"AE", @"44", @"GB",
                               @"1", @"US", @"598", @"UY", @"998", @"UZ", @"678", @"VU",
                               @"681", @"WF", @"967", @"YE", @"260", @"ZM", @"263", @"ZW",
                               @"591", @"BO", @"673", @"BN", @"61", @"CC", @"243", @"CD",
                               @"225", @"CI", @"500", @"FK", @"44", @"GG", @"379", @"VA",
                               @"852", @"HK", @"98", @"IR", @"44", @"IM", @"44", @"JE",
                               @"850", @"KP", @"82", @"KR", @"856", @"LA", @"218", @"LY",
                               @"853", @"MO", @"389", @"MK", @"691", @"FM", @"373", @"MD",
                               @"258", @"MZ", @"970", @"PS", @"872", @"PN", @"262", @"RE",
                               @"7", @"RU", @"590", @"BL", @"290", @"SH", @"1", @"KN",
                               @"1", @"LC", @"590", @"MF", @"508", @"PM", @"1", @"VC",
                               @"239", @"ST", @"252", @"SO", @"47", @"SJ", @"963", @"SY",
                               @"886", @"TW", @"255", @"TZ", @"670", @"TL", @"58", @"VE",
                               @"84", @"VN", @"1", @"VG", @"1", @"VI", nil];
    
    return dictCodes;
}

/*
 取得全部國家列表並且轉成中文與代碼
 */
+(NSMutableArray *)getCountryCodeAll
{
    NSLocale *curLocal = [[NSLocale alloc]initWithLocaleIdentifier:[Language userLanguage]] ;//簡體

    //取得全部國家ISOCountryCodes
    NSArray *allLanguageCountry = [NSLocale ISOCountryCodes];
    
    NSMutableArray *allCountry = [[NSMutableArray alloc]initWithCapacity:0];
    
    for (NSString* value in allLanguageCountry) {
        
       // NSLog(@"%@",value);
        
        //轉變 ISOCountryCodes 轉變成 國家名稱
        NSString *countryString = [curLocal displayNameForKey:NSLocaleCountryCode value:value];

        //NSLog(@"countryString %@",countryString);

        //轉變 ISOCountryCodes 轉變成 國家代碼
        NSString *countryCodeNumber = [[self dictCountryCodes]objectForKey:[value uppercaseString]];
        
        if (countryString != NULL && countryCodeNumber != NULL)
        {
            NSDictionary *dict = @{@"country":countryString,
                                   @"code":countryCodeNumber};
            
            [allCountry addObject:dict];
        }

    }
    
    return allCountry;
}

/*
 取得Wifi mac只有12碼的16進位數字 ex: b8:f6:b1:1b:1d:17
 */
+ (NSString *)currentWifiSSID
{
    NSString *bssid = nil;
    NSArray *ifs = (__bridge   id)CNCopySupportedInterfaces();
    
    NSLog(@"%@",ifs);
    
    NSString *getBssid = @"";
    
    for (NSString *ifname in ifs) {
        
        NSLog(@"%@",ifname);
        
        NSDictionary *info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);
        
        NSLog(@"%@",info);
    
        bssid = [info objectForKey:@"BSSID"];
        
        //以下是拆解 bssid
        NSArray *array = [bssid componentsSeparatedByString:@":"];
        
        for (NSString *string in array) {
            
            if (string.length<2) {
                
                getBssid = [getBssid stringByAppendingString:[NSString stringWithFormat:@"0%@",string]];
            }else{
                getBssid =[getBssid stringByAppendingString:string];
            }
            
        }
    }
    NSLog(@"%@",getBssid);
    
    //通过CNCopySupportedInterfaces获取wifi列表，实际测试中返回数组中只有一个值，即当前连接的wifi。
    return getBssid;
    
}
/*
 取得現在 wifi 名稱
 */
+ (NSString *)currentWifiName
{
    NSString *bssid = @"";
    NSArray *ifs = (__bridge   id)CNCopySupportedInterfaces();
    
    NSLog(@"%@",ifs);
    
    
    for (NSString *ifname in ifs) {
        
        NSLog(@"%@",ifname);
        
        NSDictionary *info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);
        
        NSLog(@"%@",info);
        
        bssid = [info objectForKey:@"SSID"];
        
    }
    NSLog(@"%@",bssid);
    
    //通过CNCopySupportedInterfaces获取wifi列表，实际测试中返回数组中只有一个值，即当前连接的wifi。
    return bssid;
    
}
/*
 取得帳號添加國碼之後的帳號
 */
+(NSString *)accountAddCountryCode
{
    NSString *account = [NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults]objectForKey:@"account"]];
    NSString *country = [NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults]objectForKey:@"code"]];

    NSLog(@"%@",account);
    NSLog(@"%@",country);

    if ([account hasPrefix:@"0"]) {
        account = [account substringFromIndex:1];
        country = [country stringByAppendingString:@"."];
        country = [country stringByAppendingString:account];
        NSLog(@"%@",country);
        
        return country;
    }else
    {
        country = [country stringByAppendingString:@"."];
        country = [country stringByAppendingString:account];
        NSLog(@"%@",country);
        
        return country;
    }
    
    
    return account;
}
@end
